package com.example.mysql.学习笔记.基础.查询;
//添加的值用单引号
/**
 * select distinct 字段 from 表名
 * //distinct去重  一定要在select后面  如果两个字段   那么就联合去重  都相同的时候删除
 *
 * sql的空值  不等于  0 和  ''
 * 空值于任何值计算都是空值
 * IFNULL(字段，0)   如果 该字段为空 则用0代替
 *
 *
 * 着重号  ``
 * 如果 表名名字是一个关键字的话  用一个着重号  ``  esc下面的的那个字符
 *
 *
 * SELECT '常数',email FROM employees;
 * 如果表中没有这个信息  但是都需要这个信息  并且都一样  可以用查询常数
 *
 * DESCRIBE 表名//查看表的每个字段的详细信息
 * DESC 表名//查看表的每个字段的详细信息
 *
 */

/**
 * where//必须在from后面
 *
 * SELECT （列名用，隔开   *表示全部）* FROM 表名 where
 *
 */

/**
 * 算数运算符：
 * +            求和
 * -            差
 * *            乘积
 * /或者DIV      除
 * %或者MOD      求余
 *
 * + 求和    -  差
 *  10+'1' 在sql表示10+1=11  会自动将字符串转换成数值
 *  如果 10+'a'  显示是10   不会转换  默认为0计算
 *
 *  null与任何值计算都为空
 *
 *  *    /或者DIV
 *  乘法  小数点和  两者的小数点个数的和的一样多
 * 任何数/0  结果为null
 * 除数默认4位有效数字
 * 分母  不管几位都相当于4位
 * 分子是小数   小数点为分子个数+4
 *
 * %或者MOD      求余
 * 12%5   2
 * 12%-5   2
 * -12%5   -2
 * -12%-5   -2
 */

/**
 *比较运算符
 * 会出现 true(1)  false(0)   NULL（只要有NULL   结果都是NULL  即使是NULL=NULL）
 *
 * =     等于   1=1->1   1='1'->1   0='b'->1  1.0=1->1//在运算的时候  字符默认为0
 *       'a'='a'->1  'A'='a'->1  'ab'='ab'->1  'a'='b'->0   两边都是字符串时 不转换成0用ANSI比较  也不区分大小写
 * <=>   安全等与   和=相似   唯一区别就是对 NULL 的区别  1<=>NULL->0   NULL<=>NULL->1
 * <>    不等于
 * !=    不等于
 * <      小于    'ab'<'ac' ->1  'abc'<'ac' ->1  一位一位比较
 * >      大于
 * <=     小于等于
 * >=    大于等于
 *
 *   666='666a'->1     666='666a6'->1   字符串遇见字符  直接截断
 *
 */

/**
 * 字母式  比较运算符
 * 字段 IS NULL                为空运算符          判断一个值、字符串或表达式是否为空
 * ISNULL(字段)                为空运算符          判断一个值、 字符串或表达式是否为空
 * 字段 IS NOT NULL            不为空运算符        判断值、字符串或表达式是否不为空
 * NOT 字段<=>字段              安全不等于
 * LEAST(字段，字段)             最小值运算符        在多个值中返回最小值
 * GREATEST(字段，字段)          最大值运算符        在多个值中返回最大值
 * 变量1 BETWEEN 变量2 AND/OR 变量3  两值之间的运算符    判断一个值是否在两个值之间
 *              变量1 是否大于等于变量2  且/或 小于等于变量3   变量2和3不可以互换
 * 变量1 IN(值1,值2,值3)          属于运算符        判断一个值是否为列表中的任意一个值
 * 变量1 NOT IN (值1,值2,值3)     不属于运算符       判断一个值是否不是一个列表中的任意一个值
 * 字段 LIKE '%a%'             模糊匹配运算符       判断一个值是否符合模糊匹配规则
 *      %代表不确定字符的的任意个数     _代表一个不确定字符
 *      如过字符中存在 %或_  使用转义字符\   \% \_   表示一个%或_字符
 *       或者在后面加 ESCAPE '$'   告诉数据库   我现在用$表示转义字符
 *
 *
 * REGEXP         正则表达式运算符     判断一个值是否符合正则表达式的规则
 * RLIKE          正则表达式运算符     判断一个值是否符合正则表达式的规则
 * 变量1  REGEXP ‘正则表达式’
 *
 *   ^b  匹配以b字符开头的字符串
 *   b$  匹配以b字符结尾的字符串
 *   .   匹配任意单个字符
 *   a*   匹配任意0个或多个a字符
 *   +   匹配任意1个或多个字符
 *   <ab>   匹配字符串  包含ab的
 *   [ab]   匹配字符串  存在a或b     [a-z] 字符a到字符z
 *   [^ab]   匹配字符串  不存在a或b的
 *
 *
 */

/**
 * 逻辑运算符
 * NOT  !     逻辑非
 * AND  &&    逻辑且
 * OR    ||   逻辑或
 * XOR        逻辑异或  相同为0  不同为1   相当与二进制+法 只取最低位
 *
 * AND 优先级比OR高
 */

/**
 * 位运算符
 * &       按位 与
 * |       按位 或
 * ^       按位异或
 * ~       按位取反
 * >>      按位右移
 * <<      按位左移
 */
public class 运算符 {
}

/**
 * 运算符优先级   越大越高
 * 1  :=, = (赋值)
 * 2 ||，OR, XOR
 * 3  &&，AND
 * 4 NOT
 * 5 BETWEEN，CASE，WHEN, THEN和ELSE
 * 6 = (比较运算符)，<=>, >=，>, <=，<, <, !=，IS，LIKE， REGEXP和IN
 * 7  |
 * 8  &
 * 9 << 与 >>
 * 10  -和+
 * 11 *，/, DIV, %和MOD
 * 12 ^
 * 13 . (负号)和~ (按位取反)
 * 14 !
 * 15 ()
 */
